package queue

// 声明一个类型 Queue2 类型，这个类型是用 []interface {} 切片实现的,这个切片类型是interface{}
/**
	用 interface{} 表示，可以接收任何类型
 */
type Queue3 []interface {}

// 添加元素, 我这里限定只能添加 int 类型元素
func (q *Queue3) Push(v int)  {
	// 这里使用指针，才可以把数据真正的添加进去，共外部可用
	*q = append(*q, v)
}

// 弹出顶层元素
// 我这里是用 Queue3 是 interface{} 类型，什么元素都可以添加
// 但是我现在只希望返回的类型是 int
func (q *Queue3) Pop() int  {
	// 获取最顶层元素
	head := (*q)[0]
	// 把顶层元素剔除
	*q = (*q)[1:]


	// 把值转换为 int
	return head.(int)
}

// 判断是否有值, 是否为empty
func (q *Queue3) IsEmpty() bool {
	return len(*q) == 0
}

